home *** CD-ROM | disk | FTP | other *** search
- DEFINT A-Z
- '$INCLUDE: 'qb.bi'
- DECLARE FUNCTION ExeName$ ()
-
- FUNCTION ExeName$
-
- 'Returns full name of currently running program.
- '(Works only under DOS 3.x)
-
- DIM Regs AS RegType
- Regs.ax = &H62 * 256 'Int 21h, function 62h
- CALL INTERRUPT(&H21, Regs, Regs)
-
- DEF SEG = Regs.bx 'Returns PSP segment in BX.
- EnvPtr& = PEEK(44) + PEEK(45) * 256 'Get env segment at byte 44.
- DEF SEG = EnvPtr& 'Point to env block.
-
- Byte = 0 'Scan thru env variables
- DO 'until we reach a double-null,
- IF PEEK(Byte) = 0 THEN 'signifying end-of-list.
- IF PEEK(Byte + 1) = 0 THEN
- Byte = Byte + 2
- EXIT DO
- END IF
- END IF
- Byte = Byte + 1
- LOOP
-
- IF PEEK(Byte) = 1 THEN 'If next byte is 1, then
- Byte = Byte + 2 'program name follows.
- Temp$ = SPACE$(128) 'Read name into Temp$, one
- StrPtr = 0 'byte at a time.
- DO
- IF PEEK(Byte) = 0 THEN EXIT DO
- StrPtr = StrPtr + 1
- MID$(Temp$, StrPtr, 1) = CHR$(PEEK(Byte))
- Byte = Byte + 1
- LOOP
- ExeName$ = LEFT$(Temp$, StrPtr)
- ELSE
- ExeName$ = ""
- END IF
- DEF SEG
-
- END FUNCTION
-